#ifndef MAINAPP_H_
#define MAINAPP_H_

#include <ros/ros.h>

// names of node parameters
#define X_LOCS_PARAM "x_locations"
#define Y_LOCS_PARAM "y_locations"
#define GOAL_TOLERANCE "goal_tolerance"
#define WAIT_AT_GOAL "wait_at_goal"
#define NUM_LAPS "num_laps"
#define LOG_FILE_NAME "log_file_name"
#define WAIT_FOR_SERVER "wait_for_server"

/**
 * Builds the objects and manages the patrol task
 */
class MainApp {

public:

	/**
	 * Constructor- initializes new manager object
	 */
	MainApp();

	/**
	 * Destructor
	 */
	virtual ~MainApp();

	/**
	 * Runs the patrol task
	 */
	void runTask();

private:
	ros::NodeHandle m_node;
	std::vector<float> m_xLocs; // x coordinates of all patrol locations
	std::vector<float> m_yLocs; // y coordinates of all patrol locations
	double m_goalTolerance; // tolerance distance for reaching goal position
	double m_waitAtGoal; // how long (seconds) should wait at goal position
	int m_numLaps; // how many patrol rounds should do
	std::string m_logFileName; // name of log file
	double m_waitForServer; // how long (seconds) should wait for action server
};

#endif /* MAINAPP_H_ */
